import numpy as np
%matplotlib notebook
import matplotlib.pyplot as plt
import ipywidgets as widgets
from maux import *
hide_interactive_toolbars()
from mtest import true_false_test
# nastavenie jazyka
from locale import setlocale, LC_ALL
from platform import uname
if uname()[0] == 'Linux':
setlocale(LC_ALL, 'sk_SK.utf8')
else:
setlocale(LC_ALL, 'sk_SK')
plt.rcParams["axes.formatter.use_locale"] = True
V nasledujúcich príkladoch budeme kresliť grafy elementárnych funkcií spolu s ich deriváciami.
To, že derivácia je správne vyrátaná, budeme overovať graficky. Skúška správnosti pozostáva z nakreslenia dotyčnice grafu funkcie pre vybrané body. Predpis pre dotyčnicu grafu funkcie $f$ v bode $[a,f(a)]$ má tvar $$y = f'(a) (x-a) + f(a).$$
Dokumentácia:
Nájdite deriváciu funkcie $$y = \frac{3}{5}x^{\frac{5}{3}}-x^{-\sqrt{5}}.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return 3/5 * X ** (5/3) - X ** (-np.sqrt(5))
X = np.linspace(0, 5, 5*100+1)
X = X[X > 0] # len kladné čísla patria do oboru definície
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 6)
## diagram
init_subplot(ax)
ax.set_ylim(-10, 10)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \frac{3}{5}x^{\frac{5}{3}}-x^{-\sqrt{5}}$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc='upper center')
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \frac{1+x-x^2}{1-x+x^2}.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return (1 + X - X ** 2) / (1 - X + X ** 2)
X = np.linspace(-4, 4, 8*10+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 6)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.set_ylim(-3, 3)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \dfrac{1+x-x^2}{1-x+x^2}$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc='upper left')
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = (3x-7)^{10}.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return (3 * X - 7) ** 10
X = np.linspace(7/3-1/3, 7/3+1/3, 2*100+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(4, 6)
## diagram
init_subplot(ax, 2, 0)
ax.set_aspect(1/2)
ax.set_ylim(-1.1, 1.1)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = (3x-7)^{10}$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc='lower right')
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \sin(\cos^2 x)\cdot\cos(\sin^2 x).$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return np.sin(np.cos(X) ** 2) * np.cos(np.sin(X) ** 2)
X = np.linspace(-2*np.pi, 2*np.pi, 4*100+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 2.5)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.set_ylim(-1.2, 1.2)
## x-ová os
xtick_numerators = range(-4, 4+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2) for n in xtick_numerators])
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \sin(\cos^2\,x)\cdot\cos(\sin^2\,x)$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc=(0.30, 1.00))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \frac{\sin^2 x}{\sin x^2}.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return np.sin(X) ** 2 / np.sin(X ** 2)
X = np.linspace(-np.pi-np.pi/8, np.pi+np.pi/8, 18*10000+1)
# pole intervalov, ktoré obsahujú prvky z X patriace do definičného oboru funkcie
ps = [X[0], -np.sqrt(3*np.pi), -np.sqrt(2*np.pi), -np.sqrt(np.pi), 0, np.sqrt(np.pi), np.sqrt(2*np.pi), np.sqrt(3*np.pi), X[-1]]
Is = []
for i in range(len(ps)-1):
Is.append(X[(ps[i] < X) & (X < ps[i+1])])
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 8)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.set_ylim(-3.3, 3.3)
## x-ová os
xtick_numerators = range(-4, 4+1)
ax.set_xticks([n * np.pi / 4 for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 4) for n in xtick_numerators])
## graf funkcie
color = ax.plot([], [], label=r"funkcia $y = \dfrac{\sin^2\,x}{\sin\,x^2}$")[0].get_color()
for I in Is:
ax.plot(I, f(I), c=color)
ax.plot(0, 1, 'o', c=color, mfc='w') # číslo 0 nepatrí do oboru definície
## asymptoty bez smernice
Ay = np.linspace(-3.3, 3.3)
for p in [p for p in ps if p != 0]:
Ax = np.ones(len(Ay)) * p
ax.plot(Ax, Ay, 'k--', lw=1)
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return X # ufunc verzia derivácie
# dIs = Is # pole intervalov, ktoré obsahujú prvky z X patriace do definičného oboru derivácie
## graf derivácie
# color = ax.plot([], [], label=r"derivácia $y = \ldots$")[0].get_color()
# for dI in dIs:
# ax.plot(dI, df(dI), c=color)
# ax.plot(None, None, 'o', c=color, mfc='w') # číslo None nepatrí do oboru definície
## skúška správnosti
# for dI in dIs:
# true_false_test(ax, f, dI, df)
### dokončenie
# ax.legend()
ax.legend(loc=(0.23, 1.00))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \ln(x+\sqrt{x^2+1}).$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return np.log(X + np.sqrt(X ** 2 + 1))
X = np.linspace(-3, 3, 6*10+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 5)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.set_ylim(-2.2, 2.2)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \ln\,(x+\sqrt{x^2+1})$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc='lower right')
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = x^x, \qquad x > 0.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return X ** X
X = np.linspace(0, 2, 2*200+1)
X = X[X > 0] # len kladné čísla patria do oboru definície
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 8)
## diagram
init_subplot(ax)
#ax.set_aspect('equal')
ax.set_aspect(1/2)
ax.set_ylim(-4, 4)
## graf funkcie
color = ax.plot([], [], label=r"funkcia $y = x^x$")[0].get_color()
ax.plot(X, f(X), c=color)
ax.plot(0, 1, 'o', c=color, mfc='w') # číslo 0 nepatrí do oboru definície
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc='lower right')
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = (\cos x)^{(\sin x)}+(\sin x)^{(\cos x)}, \qquad x \in \left(0,\frac{\pi}{2}\right).$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return np.cos(X) ** np.sin(X) + np.sin(X) ** np.cos(X)
X = np.linspace(0, np.pi/2, 1000+1)
X = X[(0 < X) & (X < np.pi/2)] # čísla 0 a π/2 nepatria do oboru definície
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(10, 8)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
## x-ová os
xtick_numerators = range(0, 4+1)
ax.set_xticks([n * np.pi / 8 for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 8) for n in xtick_numerators])
## y-ová os
ax.set_ylim(-3*np.pi/8*1.1, np.pi/2*1.1)
ytick_numerators = range(-3, 4+1)
ax.set_yticks([n * np.pi / 8 for n in ytick_numerators])
ax.set_yticklabels([smart_ticklabel(n, r"\pi", 8) for n in ytick_numerators])
## graf funkcie
color = ax.plot([], [], label=r"funkcia $y = (\cos\,x)^{(\sin\,x)}+(\sin\,x)^{(\cos\,x)}$")[0].get_color()
ax.plot(X, f(X), c=color)
ax.plot(0, 1, 'o', c=color, mfc='w') # číslo 0 nepatrí do oboru definície
ax.plot(np.pi/2, 1, 'o', c=color, mfc='w') # číslo π/2 nepatrí do oboru definície
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# color = ax.plot([], [], label=r"derivácia $y = ldots$")[0].get_color()
# ax.plot(dX, df(dX), c=color)
# ax.plot(None, None, 'o', c=color, mfc='w') # číslo None nepatrí do oboru definície
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc=(-0.50, 1.00))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie \begin{align} y = (x-1)^3(2x+3)^2(4x-1). \end{align} Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return (X - 1) ** 3 * (2 * X + 3) ** 2 * (4 * X - 1)
X = np.linspace(-1.70, 1.50, 32*10+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 12)
## diagram
init_subplot(ax)
ax.set_aspect(1/50)
ax.set_ylim(-100.0*1.1, 100.0*1.1)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = (x-1)^3(2x+3)^2(4x-1)$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc='lower center')
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie \begin{align} y = \dfrac{3x+2-2x^2}{6(x-2)^3(x+1)^2}. \end{align} Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
#### nakreslenie grafu funkcie a jej derivácie (riešenie)
####
### zadanie
## vstupné údaje
def f(X): return (3 * X + 2 - 2 * X ** 2) / (6 * (X - 2) ** 3 * (X + 1) ** 2)
X = np.linspace(-2.5, 3.5, 60*10+1)
X1, X2, X3 = X[X < -1], X[(X > -1) & (X < 2)], X[X > 2] # čísla -1, 2 nepatria do oboru definície
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 9)
## diagram
init_subplot(ax)
ax.set_aspect(1/1)
Y = np.linspace(-3*1.1, 3*1.1)
ax.set_ylim(Y.min(), Y.max())
## graf funkcie
color = ax.plot([], [], label=r"funkcia $y = \dfrac{3x+2-2x^2}{6(x-2)^3(x+1)^2}$")[0].get_color()
ax.plot(X1, f(X1), c=color)
ax.plot(X2, f(X2), c=color)
ax.plot(X3, f(X3), c=color)
## asymptota bez smernice
Ay1 = Y
Ax1 = np.ones(len(Ay1)) * (-1)
ax.plot(Ax1, Ay1, 'k--', lw=1) # v bode -1
Ay2 = Y
Ax2 = np.ones(len(Ay2)) * 2
ax.plot(Ax2, Ay2, 'k--', lw=1) # v bode 2
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX1, dX2, dX3 = None, None, None # tie prvky z X1, X2, X3, ktoré patria do definičného oboru derivácie
## graf derivácie
# color = ax.plot([], [], label=r"derivácia $y = \ldots$")[0].get_color() # tento údaj upravte
# ax.plot(dX1, df(dX1), c=color)
# ax.plot(dX2, df(dX2), c=color)
# ax.plot(dX3, df(dX3), c=color)
## skúška správnosti
# true_false_test(ax, f, dX1, df)
# true_false_test(ax, f, dX2, df)
# true_false_test(ax, f, dX3, df)
### dokončenie
# ax.legend()
ax.legend(loc='upper center')
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie \begin{align} y = \sin(\sin(\sin 3x))). \end{align} Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
#### nakreslenie grafu funkcie a jej derivácie (riešenie)
####
### zadanie
## vstupné údaje
def f(X): return np.sin(np.sin(np.sin(3 * X)))
X = np.linspace(-1*np.pi, 1*np.pi, 4*2*100+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 9)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
# ax.grid()
## x-ová os
xtick_numerators = range(-6, 6+1)
ax.set_xticks([n * np.pi / 6 for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 6) for n in xtick_numerators])
## y-ová os
ax.set_ylim(-3.3, 3.3)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \sin(\sin(\sin\,3x)))$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc=(0.20, 1.05))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie \begin{align} y = \mathrm{e}^{\cos^2\,3x}. \end{align} Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
#### nakreslenie grafu funkcie a jej derivácie (riešenie)
####
### zadanie
## vstupné údaje
# def f(X): return 3 ** np.sin(X) ** 3
def f(X): return np.e ** np.cos(3 * X) ** 2
X = np.linspace(-1*np.pi, 1*np.pi, 4*2*100+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 9)
## diagram
init_subplot(ax)
# ax.set_aspect('equal')
ax.set_aspect(1/2)
# ax.grid()
## x-ová os
xtick_numerators = range(-4, 4+1)
ax.set_xticks([n * np.pi / 4 for n in xtick_numerators]) # kótovanie x-ovej osi
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 4) for n in xtick_numerators]) # označenie kót na x-ovej osi
## y-ová os
ax.set_ylim(-6*1.1, 6*1.1)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \mathrm{e}^{\cos^2\,3x}$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc=(0.25, 1.05))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie \begin{align} y = \ln(1+\cos^2\,x)-2\,\cos\,x\,\arctan\,\cos\,x. \end{align} Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return np.log(1 + np.cos(X) ** 2) - 2 * np.cos(X) * np.arctan(np.cos(X))
X = np.linspace(-2*np.pi, 2*np.pi, 4*2*20+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 8)
## diagram
init_subplot(ax)
ax.set_aspect(np.pi/2/0.25)
# ax.grid()
## x-ová os
xtick_numerators = range(-4, 4+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2) for n in xtick_numerators])
## y-ová os
ax.set_ylim(-1, 1)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \ln(1+\cos^2\,x)-2\,\cos\,x\,\arctan\,\cos\,x$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return X # tento údaj upravte
# dX = X # tento údaj upravte
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$") # tento údaj upravte
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc=(0.20, 1.05))
# fig.savefig("<meno súboru>.png")
fig.savefig("lab10-5.png")
fig.show()